package com.saver.view.data;

import android.content.Context;
import android.graphics.Color;

import com.saver.core.persistence.TransaccionSQLite;
import com.saver.core.util.CommonUtil;
import com.saver.core.util.Constantes;
import com.saver.core.util.ItemUtil;
import com.saver.view.adapter.ContentItemListCategoria;
import com.saver.view.model.FragmentModel;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class ChartDataUtil {

    int anio, mes, dia, tipoConsulta;

    public ArrayList<ContentItemListCategoria> generateDataList(List<ItemUtil> listaTotales) {
        ArrayList<ContentItemListCategoria> lista = new ArrayList<ContentItemListCategoria>();

        for (ItemUtil item : listaTotales) {
            // String s = df.format(item.getDescripcion());
            lista.add(new ContentItemListCategoria(item.getDescripcion(),
                    CommonUtil.formatCurrency(item.getValor()),
                    item.getIcono(),
                    item.getColor(),
                    item.getId(),
                    item.getValor()));
        }
        return lista;
    }

    public List<ItemUtil> generateDataPie(FragmentModel model, Context context) {
        List<ItemUtil> listaTotales;
        TransaccionSQLite transaccionSQLite = new TransaccionSQLite(context);

        tipoConsulta = model.getTipoConsulta();
        anio = model.getCalendar().get(Calendar.YEAR);
        mes = model.getCalendar().get(Calendar.MONTH) + 1;
        dia = model.getCalendar().get(Calendar.DATE);

        if (tipoConsulta == Constantes.CONSULTA_X_ANIO) {
            listaTotales = transaccionSQLite.listarTotalesXCategoria(anio);
        } else if (tipoConsulta == Constantes.CONSULTA_X_MES) {
            listaTotales = transaccionSQLite.listarTotalesXCategoria(anio, mes);
        } else {
            listaTotales = transaccionSQLite.listarTotalesXCategoria(anio, mes, dia);
        }
        return listaTotales;
    }

    public ArrayList<Integer> generateColors(List<ItemUtil> listaTotales) {
        ArrayList<Integer> colors = new ArrayList<Integer>();
        for (ItemUtil item : listaTotales) {
            if (item.getValor() > 0) {
                String[] rgb = item.getColor().split(",");
                colors.add(Color.rgb(Integer.parseInt(rgb[0]), Integer.parseInt(rgb[1]), Integer.parseInt(rgb[2])));
            }
        }
        return colors;
    }
}
